// TS的属性和方法封装
// 在语法层面上提供私有功能或属性的扩展
var UserE = /** @class */ (function () {
    function UserE() {
        this.name = "tom";
        this._age = 23;
    }
    UserE.prototype.print = function () {
        console.log("print:", this.name);
        this._show();
    };
    UserE.prototype._show = function () {
        console.log("show:", this._age);
    };
    Object.defineProperty(UserE.prototype, "age", {
        // 提供对属性拦截的特殊定义
        // 被监控的属性定义
        get: function () {
            return this._age;
        },
        set: function (nv) {
            this._age = nv;
        },
        enumerable: true,
        configurable: true
    });
    return UserE;
}());
var u3 = new UserE();
console.log(u3.name);
// console.log(u3._age);
u3.print();
// u3._show();
console.log(u3.age);
u3.age = 33;
